汇编开发环境的搭建和使用 |
您所在的位置:网站首页 › call datacate › 汇编开发环境的搭建和使用 |
1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程
(一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件) 例如,编写程序,判断一个年份是否是闰年的汇编语言源程序,可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如: C> EDIT ABC.ASM 进入EDIT的程序编辑画面时,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR LEA SI,BUF+2 MOV BX,0 X3: MOV AL ,[SI] SUB AL ,30H MOV AH,0 XCHG AX,BX MOV DX,10D MUL DX XCHG AX,BX ADD BX,AX INC SI LOOP X3 MOV W,BX RET DATACATE ENDP IFYEARS PROC NEAR PUSH BX PUSH CX PUSH DX MOV AX,W MOV CX,AX MOV DX,0 MOV BX,4 DIV BX CMP DX,0 JNZ LAB1 MOV AX,CX MOV BX,100 DIV BX CMP DX,0 JNZ LAB2 MOV AX,CX MOV BX,400 DIV BX CMP DX,0 JZ LAB2 LAB1: CLC JMP LAB3 LAB2: STC LAB3: POP DX POP CX POP BX RET IFYEARS ENDP CODE ENDS END START
(二)用汇编程序MASM将ASM文件汇编成目标程序文件(OBJ文件)
当源程序建立以后,仍以ABC.ASM程序为例,我们用汇编程序MASM对ABC.ASM源程序文件进行汇编,以便产生机器码的目标程序文件ABC.OBJ,其操作步骤如下: C>MASM ABC Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved. Object filename [ABC.OBJ]: Source listing [NUL.LST]:ABC Cross-reference [NUL.CRF]:ABC 50674 + 450574 Bytes symbol space free 0 Warning Errors 0 Severe Errors 由此可知,汇编程序调入后,首先显示版本号,然后出现三个提示行。 第一个提示行为:Object filename [ABC.OBJ]: 这是询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示),这是我们汇编的主要目的。 第二个提示行为: Source listing [NUL.LST]: 这是询问是否建立列表文件。若不建立,直接回车;若要建立,可以输入文件名ABC再回车,表示要建立名为ABC的列表文件。列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序调试。 第三个提示行为:Cross-reference [NUL.CRF]: 这是询问是否要建立交叉索引文件。若不建立,则直接回车;若要建立,可以输入文件名ABC,表示要建立ABC.CRF文件。由于.CRF是非文本文件,为了建立交叉索引文件,还必须调用CREF.EXE程序,即输入: C>CREF ABC Microsoft (R) Cross-Reference Utility Version 5.00 Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved. listing [ABC.REF]: 17 Symbols 这时首先显示版本号,然后出现一个提示行:Listing [ABC.REF]: 这是询问交叉索引文件名。这时可用回车承认方括号内机器默认的文件名,如上所示。这样就建立了ABC.REF文件。其内容是用户定义的所有符号(包括变量),并给出每个符号定义所在的行号(附以#)以及引用的行号。如下是ABC.REF文件的内容: Microsoft Cross-Reference Version 5.00 Sat Dec 01 18:49:42 2007 Symbol Cross-Reference (# definition, + modification) Cref-1 A1 . . . . . . . . . . . . . . . 42 47# BUF. . . . . . . . . . . . . . . 15# 35 38 39 55 CODE . . . . . . . . . . . . . . 28# 29 111 DATA . . . . . . . . . . . . . . 1# 21 29 30 DATACATE . . . . . . . . . . . . 40 53# 80 EXIT . . . . . . . . . . . . . . 46 50# IFYEARS. . . . . . . . . . . . . 41 82# 110 INFON. . . . . . . . . . . . . . 2# 32 LAB1 . . . . . . . . . . . . . . 92 103# LAB2 . . . . . . . . . . . . . . 97 102 105# LAB3 . . . . . . . . . . . . . . 104 106# N. . . . . . . . . . . . . . . . 10# 43 STACK. . . . . . . . . . . . . . 22# 22 27 29 START. . . . . . . . . . . . . . 30# 112 W. . . . . . . . . . . . . . . . 14# 76+ 86 X3 . . . . . . . . . . . . . . . 60# 73 Y. . . . . . . . . . . . . . . . 6# 47 17 Symbols
调入汇编程序,当我们回答了上述各提示行的询问之后,汇编程序就对源程序进行汇编。若汇编过程中发现源程序有语法错误,则列出有错误的语句和错误的代码。错误分警告错误(Wraning Errors)和严重错误(Severe Errors)。警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数及行号、错误的性质等。这时,就要对错误进行分析,找出问题和原因,然后再调用编辑程序加以修改,修改后重新汇编,直到汇编后无错误为止。
(三) 用连接程序LINK生成可执行程序文件(EXE文件)
经汇编后产生的二进制的目标程序文件(OBJ文件)并不是可执行程序文件(EXE文件),必须经连接以后,才能成为可执行文件。连接程序并不是专为汇编语言程序设计的。如果一个程序是由若干个模块组成的,也可通过连接程序LINK把它们连接在一起。这些模块可以是汇编程序产生的目标文件,也可以是高级语言编译程序产生的目标文件。 连接过程如下: C>LINK ABC Microsoft (R) Overlay Linker Version 3.60 Copyright (C) Microsoft Corp 1983-1987. All rights reserved. Run File [ABC.EXE]: List File [NUL.MAP]:ABC Libraries [.LIB]: 在连接程序调入后,首先显示版本号,然后出现三个提示行。 第一个提示行为:Run File [ABC.EXE]: 这是询问要产生的可执行文件的文件名。一般直接回车采用方括号内规定的隐含文件名。 第二个提示行为:List File [NUL.MAP]: 这是询问是否要建立连接映象文件。若不建立,则直接回车;若要建立,则输入文件名再回车。如果要建立该文件,可以输入文件名ABC。 第三个提示行为:Libraries [.LIB]: 这是询问是否用到库文件。若无特殊需要,则直接回车即可。 上述提示行回答后,连接程序开始连接。若连接过程中有错,则显示错误信息,错误分析清楚后,要重新调入编辑程序进行修改,然后重新汇编,再经过连接,直至无错为止。连接以后,便产生了可执行程序文件(EXE文件)。
(四) 程序的执行
当我们建立了可执行文件ABC.EXE后,就可直接在DOS下执行该程序: C>ABC 根据程序提示,输入一个年份,计算机会输出是否闰年的结果。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |